#ifndef REG_GPIO_TYPE_H_
#define REG_GPIO_TYPE_H_
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct
{
    volatile uint32_t DIN;
    volatile uint32_t DOUT;
    volatile uint32_t BSBR;
    volatile uint32_t LOCK;
    volatile uint32_t MODE;
    volatile uint32_t IE;
    volatile uint32_t OE;
    volatile uint32_t PUPD;
    volatile uint32_t OT;
    volatile uint32_t OD;
    volatile uint32_t FLT;
    volatile uint32_t AE;
    volatile uint32_t AF0;
    volatile uint32_t AF1;
    volatile uint32_t AF2;
    volatile uint32_t AF3;
}reg_lsgpio_t;

enum GPIO_REG_DIN_FIELD
{
    GPIO_DIN0_MASK = (int)0x1,
    GPIO_DIN0_POS = 0,
    GPIO_DIN1_MASK = (int)0x2,
    GPIO_DIN1_POS = 1,
    GPIO_DIN2_MASK = (int)0x4,
    GPIO_DIN2_POS = 2,
    GPIO_DIN3_MASK = (int)0x8,
    GPIO_DIN3_POS = 3,
    GPIO_DIN4_MASK = (int)0x10,
    GPIO_DIN4_POS = 4,
    GPIO_DIN5_MASK = (int)0x20,
    GPIO_DIN5_POS = 5,
    GPIO_DIN6_MASK = (int)0x40,
    GPIO_DIN6_POS = 6,
    GPIO_DIN7_MASK = (int)0x80,
    GPIO_DIN7_POS = 7,
    GPIO_DIN8_MASK = (int)0x100,
    GPIO_DIN8_POS = 8,
    GPIO_DIN9_MASK = (int)0x200,
    GPIO_DIN9_POS = 9,
    GPIO_DIN10_MASK = (int)0x400,
    GPIO_DIN10_POS = 10,
    GPIO_DIN11_MASK = (int)0x800,
    GPIO_DIN11_POS = 11,
    GPIO_DIN12_MASK = (int)0x1000,
    GPIO_DIN12_POS = 12,
    GPIO_DIN13_MASK = (int)0x2000,
    GPIO_DIN13_POS = 13,
    GPIO_DIN14_MASK = (int)0x4000,
    GPIO_DIN14_POS = 14,
    GPIO_DIN15_MASK = (int)0x8000,
    GPIO_DIN15_POS = 15,
};

enum GPIO_REG_DOUT_FIELD
{
    GPIO_DOUT0_MASK = (int)0x1,
    GPIO_DOUT0_POS = 0,
    GPIO_DOUT1_MASK = (int)0x2,
    GPIO_DOUT1_POS = 1,
    GPIO_DOUT2_MASK = (int)0x4,
    GPIO_DOUT2_POS = 2,
    GPIO_DOUT3_MASK = (int)0x8,
    GPIO_DOUT3_POS = 3,
    GPIO_DOUT4_MASK = (int)0x10,
    GPIO_DOUT4_POS = 4,
    GPIO_DOUT5_MASK = (int)0x20,
    GPIO_DOUT5_POS = 5,
    GPIO_DOUT6_MASK = (int)0x40,
    GPIO_DOUT6_POS = 6,
    GPIO_DOUT7_MASK = (int)0x80,
    GPIO_DOUT7_POS = 7,
    GPIO_DOUT8_MASK = (int)0x100,
    GPIO_DOUT8_POS = 8,
    GPIO_DOUT9_MASK = (int)0x200,
    GPIO_DOUT9_POS = 9,
    GPIO_DOUT10_MASK = (int)0x400,
    GPIO_DOUT10_POS = 10,
    GPIO_DOUT11_MASK = (int)0x800,
    GPIO_DOUT11_POS = 11,
    GPIO_DOUT12_MASK = (int)0x1000,
    GPIO_DOUT12_POS = 12,
    GPIO_DOUT13_MASK = (int)0x2000,
    GPIO_DOUT13_POS = 13,
    GPIO_DOUT14_MASK = (int)0x4000,
    GPIO_DOUT14_POS = 14,
    GPIO_DOUT15_MASK = (int)0x8000,
    GPIO_DOUT15_POS = 15,
};

enum GPIO_REG_BSBR_FIELD
{
    GPIO_BSR0_MASK = (int)0x1,
    GPIO_BSR0_POS = 0,
    GPIO_BSR1_MASK = (int)0x2,
    GPIO_BSR1_POS = 1,
    GPIO_BSR2_MASK = (int)0x4,
    GPIO_BSR2_POS = 2,
    GPIO_BSR3_MASK = (int)0x8,
    GPIO_BSR3_POS = 3,
    GPIO_BSR4_MASK = (int)0x10,
    GPIO_BSR4_POS = 4,
    GPIO_BSR5_MASK = (int)0x20,
    GPIO_BSR5_POS = 5,
    GPIO_BSR6_MASK = (int)0x40,
    GPIO_BSR6_POS = 6,
    GPIO_BSR7_MASK = (int)0x80,
    GPIO_BSR7_POS = 7,
    GPIO_BSR8_MASK = (int)0x100,
    GPIO_BSR8_POS = 8,
    GPIO_BSR9_MASK = (int)0x200,
    GPIO_BSR9_POS = 9,
    GPIO_BSR10_MASK = (int)0x400,
    GPIO_BSR10_POS = 10,
    GPIO_BSR11_MASK = (int)0x800,
    GPIO_BSR11_POS = 11,
    GPIO_BSR12_MASK = (int)0x1000,
    GPIO_BSR12_POS = 12,
    GPIO_BSR13_MASK = (int)0x2000,
    GPIO_BSR13_POS = 13,
    GPIO_BSR14_MASK = (int)0x4000,
    GPIO_BSR14_POS = 14,
    GPIO_BSR15_MASK = (int)0x8000,
    GPIO_BSR15_POS = 15,
    GPIO_BRR0_MASK = (int)0x10000,
    GPIO_BRR0_POS = 16,
    GPIO_BRR1_MASK = (int)0x20000,
    GPIO_BRR1_POS = 17,
    GPIO_BRR2_MASK = (int)0x40000,
    GPIO_BRR2_POS = 18,
    GPIO_BRR3_MASK = (int)0x80000,
    GPIO_BRR3_POS = 19,
    GPIO_BRR4_MASK = (int)0x100000,
    GPIO_BRR4_POS = 20,
    GPIO_BRR5_MASK = (int)0x200000,
    GPIO_BRR5_POS = 21,
    GPIO_BRR6_MASK = (int)0x400000,
    GPIO_BRR6_POS = 22,
    GPIO_BRR7_MASK = (int)0x800000,
    GPIO_BRR7_POS = 23,
    GPIO_BRR8_MASK = (int)0x1000000,
    GPIO_BRR8_POS = 24,
    GPIO_BRR9_MASK = (int)0x2000000,
    GPIO_BRR9_POS = 25,
    GPIO_BRR10_MASK = (int)0x4000000,
    GPIO_BRR10_POS = 26,
    GPIO_BRR11_MASK = (int)0x8000000,
    GPIO_BRR11_POS = 27,
    GPIO_BRR12_MASK = (int)0x10000000,
    GPIO_BRR12_POS = 28,
    GPIO_BRR13_MASK = (int)0x20000000,
    GPIO_BRR13_POS = 29,
    GPIO_BRR14_MASK = (int)0x40000000,
    GPIO_BRR14_POS = 30,
    GPIO_BRR15_MASK = (int)0x80000000,
    GPIO_BRR15_POS = 31,
};

enum GPIO_REG_LOCK_FIELD
{
    GPIO_LOCK0_MASK = (int)0x1,
    GPIO_LOCK0_POS = 0,
    GPIO_LOCK1_MASK = (int)0x2,
    GPIO_LOCK1_POS = 1,
    GPIO_LOCK2_MASK = (int)0x4,
    GPIO_LOCK2_POS = 2,
    GPIO_LOCK3_MASK = (int)0x8,
    GPIO_LOCK3_POS = 3,
    GPIO_LOCK4_MASK = (int)0x10,
    GPIO_LOCK4_POS = 4,
    GPIO_LOCK5_MASK = (int)0x20,
    GPIO_LOCK5_POS = 5,
    GPIO_LOCK6_MASK = (int)0x40,
    GPIO_LOCK6_POS = 6,
    GPIO_LOCK7_MASK = (int)0x80,
    GPIO_LOCK7_POS = 7,
    GPIO_LOCK8_MASK = (int)0x100,
    GPIO_LOCK8_POS = 8,
    GPIO_LOCK9_MASK = (int)0x200,
    GPIO_LOCK9_POS = 9,
    GPIO_LOCK10_MASK = (int)0x400,
    GPIO_LOCK10_POS = 10,
    GPIO_LOCK11_MASK = (int)0x800,
    GPIO_LOCK11_POS = 11,
    GPIO_LOCK12_MASK = (int)0x1000,
    GPIO_LOCK12_POS = 12,
    GPIO_LOCK13_MASK = (int)0x2000,
    GPIO_LOCK13_POS = 13,
    GPIO_LOCK14_MASK = (int)0x4000,
    GPIO_LOCK14_POS = 14,
    GPIO_LOCK15_MASK = (int)0x8000,
    GPIO_LOCK15_POS = 15,
    GPIO_KEY_MASK = (int)0x10000,
    GPIO_KEY_POS = 16,
};

enum GPIO_REG_MODE_FIELD
{
    GPIO_MODE0_MASK = (int)0x3,
    GPIO_MODE0_POS = 0,
    GPIO_MODE1_MASK = (int)0xc,
    GPIO_MODE1_POS = 2,
    GPIO_MODE2_MASK = (int)0x30,
    GPIO_MODE2_POS = 4,
    GPIO_MODE3_MASK = (int)0xc0,
    GPIO_MODE3_POS = 6,
    GPIO_MODE4_MASK = (int)0x300,
    GPIO_MODE4_POS = 8,
    GPIO_MODE5_MASK = (int)0xc00,
    GPIO_MODE5_POS = 10,
    GPIO_MODE6_MASK = (int)0x3000,
    GPIO_MODE6_POS = 12,
    GPIO_MODE7_MASK = (int)0xc000,
    GPIO_MODE7_POS = 14,
    GPIO_MODE8_MASK = (int)0x30000,
    GPIO_MODE8_POS = 16,
    GPIO_MODE9_MASK = (int)0xc0000,
    GPIO_MODE9_POS = 18,
    GPIO_MODE10_MASK = (int)0x300000,
    GPIO_MODE10_POS = 20,
    GPIO_MODE11_MASK = (int)0xc00000,
    GPIO_MODE11_POS = 22,
    GPIO_MODE12_MASK = (int)0x3000000,
    GPIO_MODE12_POS = 24,
    GPIO_MODE13_MASK = (int)0xc000000,
    GPIO_MODE13_POS = 26,
    GPIO_MODE14_MASK = (int)0x30000000,
    GPIO_MODE14_POS = 28,
    GPIO_MODE15_MASK = (int)0xc0000000,
    GPIO_MODE15_POS = 30,
};

enum GPIO_REG_IE_FIELD
{
    GPIO_IE0_MASK = (int)0x1,
    GPIO_IE0_POS = 0,
    GPIO_IE1_MASK = (int)0x2,
    GPIO_IE1_POS = 1,
    GPIO_IE2_MASK = (int)0x4,
    GPIO_IE2_POS = 2,
    GPIO_IE3_MASK = (int)0x8,
    GPIO_IE3_POS = 3,
    GPIO_IE4_MASK = (int)0x10,
    GPIO_IE4_POS = 4,
    GPIO_IE5_MASK = (int)0x20,
    GPIO_IE5_POS = 5,
    GPIO_IE6_MASK = (int)0x40,
    GPIO_IE6_POS = 6,
    GPIO_IE7_MASK = (int)0x80,
    GPIO_IE7_POS = 7,
    GPIO_IE8_MASK = (int)0x100,
    GPIO_IE8_POS = 8,
    GPIO_IE9_MASK = (int)0x200,
    GPIO_IE9_POS = 9,
    GPIO_IE10_MASK = (int)0x400,
    GPIO_IE10_POS = 10,
    GPIO_IE11_MASK = (int)0x800,
    GPIO_IE11_POS = 11,
    GPIO_IE12_MASK = (int)0x1000,
    GPIO_IE12_POS = 12,
    GPIO_IE13_MASK = (int)0x2000,
    GPIO_IE13_POS = 13,
    GPIO_IE14_MASK = (int)0x4000,
    GPIO_IE14_POS = 14,
    GPIO_IE15_MASK = (int)0x8000,
    GPIO_IE15_POS = 15,
};

enum GPIO_REG_OE_FIELD
{
    GPIO_OE0_MASK = (int)0x1,
    GPIO_OE0_POS = 0,
    GPIO_OE1_MASK = (int)0x2,
    GPIO_OE1_POS = 1,
    GPIO_OE2_MASK = (int)0x4,
    GPIO_OE2_POS = 2,
    GPIO_OE3_MASK = (int)0x8,
    GPIO_OE3_POS = 3,
    GPIO_OE4_MASK = (int)0x10,
    GPIO_OE4_POS = 4,
    GPIO_OE5_MASK = (int)0x20,
    GPIO_OE5_POS = 5,
    GPIO_OE6_MASK = (int)0x40,
    GPIO_OE6_POS = 6,
    GPIO_OE7_MASK = (int)0x80,
    GPIO_OE7_POS = 7,
    GPIO_OE8_MASK = (int)0x100,
    GPIO_OE8_POS = 8,
    GPIO_OE9_MASK = (int)0x200,
    GPIO_OE9_POS = 9,
    GPIO_OE10_MASK = (int)0x400,
    GPIO_OE10_POS = 10,
    GPIO_OE11_MASK = (int)0x800,
    GPIO_OE11_POS = 11,
    GPIO_OE12_MASK = (int)0x1000,
    GPIO_OE12_POS = 12,
    GPIO_OE13_MASK = (int)0x2000,
    GPIO_OE13_POS = 13,
    GPIO_OE14_MASK = (int)0x4000,
    GPIO_OE14_POS = 14,
    GPIO_OE15_MASK = (int)0x8000,
    GPIO_OE15_POS = 15,
};

enum GPIO_REG_PUPD_FIELD
{
    GPIO_PUPD0_MASK = (int)0x3,
    GPIO_PUPD0_POS = 0,
    GPIO_PUPD1_MASK = (int)0xc,
    GPIO_PUPD1_POS = 2,
    GPIO_PUPD2_MASK = (int)0x30,
    GPIO_PUPD2_POS = 4,
    GPIO_PUPD3_MASK = (int)0xc0,
    GPIO_PUPD3_POS = 6,
    GPIO_PUPD4_MASK = (int)0x300,
    GPIO_PUPD4_POS = 8,
    GPIO_PUPD5_MASK = (int)0xc00,
    GPIO_PUPD5_POS = 10,
    GPIO_PUPD6_MASK = (int)0x3000,
    GPIO_PUPD6_POS = 12,
    GPIO_PUPD7_MASK = (int)0xc000,
    GPIO_PUPD7_POS = 14,
    GPIO_PUPD8_MASK = (int)0x30000,
    GPIO_PUPD8_POS = 16,
    GPIO_PUPD9_MASK = (int)0xc0000,
    GPIO_PUPD9_POS = 18,
    GPIO_PUPD10_MASK = (int)0x300000,
    GPIO_PUPD10_POS = 20,
    GPIO_PUPD11_MASK = (int)0xc00000,
    GPIO_PUPD11_POS = 22,
    GPIO_PUPD12_MASK = (int)0x3000000,
    GPIO_PUPD12_POS = 24,
    GPIO_PUPD13_MASK = (int)0xc000000,
    GPIO_PUPD13_POS = 26,
    GPIO_PUPD14_MASK = (int)0x30000000,
    GPIO_PUPD14_POS = 28,
    GPIO_PUPD15_MASK = (int)0xc0000000,
    GPIO_PUPD15_POS = 30,
};

enum GPIO_REG_OT_FIELD
{
    GPIO_OT0_MASK = (int)0x1,
    GPIO_OT0_POS = 0,
    GPIO_OT1_MASK = (int)0x2,
    GPIO_OT1_POS = 1,
    GPIO_OT2_MASK = (int)0x4,
    GPIO_OT2_POS = 2,
    GPIO_OT3_MASK = (int)0x8,
    GPIO_OT3_POS = 3,
    GPIO_OT4_MASK = (int)0x10,
    GPIO_OT4_POS = 4,
    GPIO_OT5_MASK = (int)0x20,
    GPIO_OT5_POS = 5,
    GPIO_OT6_MASK = (int)0x40,
    GPIO_OT6_POS = 6,
    GPIO_OT7_MASK = (int)0x80,
    GPIO_OT7_POS = 7,
    GPIO_OT8_MASK = (int)0x100,
    GPIO_OT8_POS = 8,
    GPIO_OT9_MASK = (int)0x200,
    GPIO_OT9_POS = 9,
    GPIO_OT10_MASK = (int)0x400,
    GPIO_OT10_POS = 10,
    GPIO_OT11_MASK = (int)0x800,
    GPIO_OT11_POS = 11,
    GPIO_OT12_MASK = (int)0x1000,
    GPIO_OT12_POS = 12,
    GPIO_OT13_MASK = (int)0x2000,
    GPIO_OT13_POS = 13,
    GPIO_OT14_MASK = (int)0x4000,
    GPIO_OT14_POS = 14,
    GPIO_OT15_MASK = (int)0x8000,
    GPIO_OT15_POS = 15,
};

enum GPIO_REG_OD_FIELD
{
    GPIO_OD0_MASK = (int)0x3,
    GPIO_OD0_POS = 0,
    GPIO_OD1_MASK = (int)0xc,
    GPIO_OD1_POS = 2,
    GPIO_OD2_MASK = (int)0x30,
    GPIO_OD2_POS = 4,
    GPIO_OD3_MASK = (int)0xc0,
    GPIO_OD3_POS = 6,
    GPIO_OD4_MASK = (int)0x300,
    GPIO_OD4_POS = 8,
    GPIO_OD5_MASK = (int)0xc00,
    GPIO_OD5_POS = 10,
    GPIO_OD6_MASK = (int)0x3000,
    GPIO_OD6_POS = 12,
    GPIO_OD7_MASK = (int)0xc000,
    GPIO_OD7_POS = 14,
    GPIO_OD8_MASK = (int)0x30000,
    GPIO_OD8_POS = 16,
    GPIO_OD9_MASK = (int)0xc0000,
    GPIO_OD9_POS = 18,
    GPIO_OD10_MASK = (int)0x300000,
    GPIO_OD10_POS = 20,
    GPIO_OD11_MASK = (int)0xc00000,
    GPIO_OD11_POS = 22,
    GPIO_OD12_MASK = (int)0x3000000,
    GPIO_OD12_POS = 24,
    GPIO_OD13_MASK = (int)0xc000000,
    GPIO_OD13_POS = 26,
    GPIO_OD14_MASK = (int)0x30000000,
    GPIO_OD14_POS = 28,
    GPIO_OD15_MASK = (int)0xc0000000,
    GPIO_OD15_POS = 30,
};

enum GPIO_REG_FLT_FIELD
{
    GPIO_FLT0_MASK = (int)0x1,
    GPIO_FLT0_POS = 0,
    GPIO_FLT1_MASK = (int)0x2,
    GPIO_FLT1_POS = 1,
    GPIO_FLT2_MASK = (int)0x4,
    GPIO_FLT2_POS = 2,
    GPIO_FLT3_MASK = (int)0x8,
    GPIO_FLT3_POS = 3,
    GPIO_FLT4_MASK = (int)0x10,
    GPIO_FLT4_POS = 4,
    GPIO_FLT5_MASK = (int)0x20,
    GPIO_FLT5_POS = 5,
    GPIO_FLT6_MASK = (int)0x40,
    GPIO_FLT6_POS = 6,
    GPIO_FLT7_MASK = (int)0x80,
    GPIO_FLT7_POS = 7,
    GPIO_FLT8_MASK = (int)0x100,
    GPIO_FLT8_POS = 8,
    GPIO_FLT9_MASK = (int)0x200,
    GPIO_FLT9_POS = 9,
    GPIO_FLT10_MASK = (int)0x400,
    GPIO_FLT10_POS = 10,
    GPIO_FLT11_MASK = (int)0x800,
    GPIO_FLT11_POS = 11,
    GPIO_FLT12_MASK = (int)0x1000,
    GPIO_FLT12_POS = 12,
    GPIO_FLT13_MASK = (int)0x2000,
    GPIO_FLT13_POS = 13,
    GPIO_FLT14_MASK = (int)0x4000,
    GPIO_FLT14_POS = 14,
    GPIO_FLT15_MASK = (int)0x8000,
    GPIO_FLT15_POS = 15,
};

enum GPIO_REG_AE_FIELD
{
    GPIO_AE0_MASK = (int)0x3,
    GPIO_AE0_POS = 0,
    GPIO_AE1_MASK = (int)0xc,
    GPIO_AE1_POS = 2,
    GPIO_AE2_MASK = (int)0x30,
    GPIO_AE2_POS = 4,
    GPIO_AE3_MASK = (int)0xc0,
    GPIO_AE3_POS = 6,
    GPIO_AE4_MASK = (int)0x300,
    GPIO_AE4_POS = 8,
    GPIO_AE5_MASK = (int)0xc00,
    GPIO_AE5_POS = 10,
    GPIO_AE6_MASK = (int)0x3000,
    GPIO_AE6_POS = 12,
    GPIO_AE7_MASK = (int)0xc000,
    GPIO_AE7_POS = 14,
    GPIO_AE8_MASK = (int)0x30000,
    GPIO_AE8_POS = 16,
    GPIO_AE9_MASK = (int)0xc0000,
    GPIO_AE9_POS = 18,
    GPIO_AE10_MASK = (int)0x300000,
    GPIO_AE10_POS = 20,
    GPIO_AE11_MASK = (int)0xc00000,
    GPIO_AE11_POS = 22,
    GPIO_AE12_MASK = (int)0x3000000,
    GPIO_AE12_POS = 24,
    GPIO_AE13_MASK = (int)0xc000000,
    GPIO_AE13_POS = 26,
    GPIO_AE14_MASK = (int)0x30000000,
    GPIO_AE14_POS = 28,
    GPIO_AE15_MASK = (int)0xc0000000,
    GPIO_AE15_POS = 30,
};

enum GPIO_REG_AF0_FIELD
{
    GPIO_IO0_AF_MASK = (int)0xff,
    GPIO_IO0_AF_POS = 0,
    GPIO_IO1_AF_MASK = (int)0xff00,
    GPIO_IO1_AF_POS = 8,
    GPIO_IO2_AF_MASK = (int)0xff0000,
    GPIO_IO2_AF_POS = 16,
    GPIO_IO3_AF_MASK = (int)0xff000000,
    GPIO_IO3_AF_POS = 24,
};

enum GPIO_REG_AF1_FIELD
{
    GPIO_IO4_AF_MASK = (int)0xff,
    GPIO_IO4_AF_POS = 0,
    GPIO_IO5_AF_MASK = (int)0xff00,
    GPIO_IO5_AF_POS = 8,
    GPIO_IO6_AF_MASK = (int)0xff0000,
    GPIO_IO6_AF_POS = 16,
    GPIO_IO7_AF_MASK = (int)0xff000000,
    GPIO_IO7_AF_POS = 24,
};

enum GPIO_REG_AF3_FIELD
{
    GPIO_IO8_AF_MASK = (int)0xff,
    GPIO_IO8_AF_POS = 0,
    GPIO_IO9_AF_MASK = (int)0xff00,
    GPIO_IO9_AF_POS = 8,
    GPIO_IO10_AF_MASK = (int)0xff0000,
    GPIO_IO10_AF_POS = 16,
    GPIO_IO11_AF_MASK = (int)0xff000000,
    GPIO_IO11_AF_POS = 24,
};

enum GPIO_REG_AF4_FIELD
{
    GPIO_IO12_AF_MASK = (int)0xff,
    GPIO_IO12_AF_POS = 0,
    GPIO_IO13_AF_MASK = (int)0xff00,
    GPIO_IO13_AF_POS = 8,
    GPIO_IO14_AF_MASK = (int)0xff0000,
    GPIO_IO14_AF_POS = 16,
    GPIO_IO15_AF_MASK = (int)0xff000000,
    GPIO_IO15_AF_POS = 24,
};
#ifdef __cplusplus
}
#endif

#endif
